#ifndef ENCODERPROVIDERMGR_H
#define ENCODERPROVIDERMGR_H

#include <QObject>
#include <QStringList>
#include <QList>
#include <QHash>

class EncoderInterface;
class EncoderOption;

class EncoderProviderMgr : public QObject
{
public:
    explicit EncoderProviderMgr(QObject *parent = 0);

    void addProviderSearchPath (const QString &path) { m_providerSearchPath.append(path); }

    void findAndRegisterProviders();

    QList<EncoderInterface *> allAvailableEncoderProviders() const;
    EncoderInterface * encoderProvider (const QString &) const;


private:
    QStringList m_providerSearchPath;
    QHash<QString,EncoderInterface *> m_installedEncoderProvider;

public:
    static EncoderProviderMgr * instance();

};

#endif // ENCODERPROVIDERMGR_H
